package cn.superchart.common.exception;

import cn.superchart.common.enums.ExceptionEnum;
import cn.superchart.common.utils.Checker;
import lombok.Data;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Data
public class ScException extends RuntimeException {

    private Integer code;

    private String msg;

    public ScException() {
        super("服务异常");
        this.code = 500;
        this.msg = "服务异常";
    }

    public ScException(ExceptionEnum exceptionEnum) {
        super(exceptionEnum.getMsg());
        this.code = exceptionEnum.getCode();
        this.msg = exceptionEnum.getMsg();
    }

    public ScException(int code, String msg) {
        super(msg);
        this.code = code;
        this.msg = msg;
    }


    public ScException(String msg, Object ... params) {
        if(Checker.BeNotEmpty(params) && Checker.BeNotBlank(msg)){
            Pattern pattern = Pattern.compile("\\{\\}");
            Matcher matcher = pattern.matcher(msg);
            int i = 0;
            while (matcher.find() && i < params.length) {
                msg = msg.replaceFirst("\\{}", String.valueOf(params[i++]));
            }
        }
        this.code = 500;
        this.msg = msg;
    }
}
